perm filename PNEW.SAI[PNT,HE]1 blob
sn#472678 filedate 1979-09-07 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 ENTRY
C00004 ENDMK
C⊗;
ENTRY;
BEGIN "PNEW"
COMMENT routines which are not available in AL;
DEFINE $PNEW=TRUE,$ALTER_EGO=TRUE;
REQUIRE "HEADER.SAI" SOURCE_FILE;
RPTR(EXPR$)PROCEDURE $PRPCODE(STRING S);
BEGIN
INTEGER I;
IPUSH(XPRNTI); ! push string immediate pcode ;
IPUSH((LENGTH(S)+2)DIV 2); ! push number of words ;
DO IPUSH(LOP(S)+ (I←LOP(S)) LSH 8) UNTIL I=0;
RETURN(βEXPR$);
END;
PROCEDURE PRINTP;
BEGIN
RPTR(EXPR$)P; P←NULL_RECORD;
WORD_READ("(");
DO BEGIN
GTOKEN;
IF TOKEN=dquote
THEN BEGIN "string found"
READTILL(dquote);
P←$APPEND(P,$PRPCODE(TOKEN))
END
ELSE BEGIN "expression found"
STOKEN←TRUE;
P←$APPEND(P,$PRVPCODE($$GTEXPR));
END;
GTOKEN;
END UNTIL TOKEN≠",";
IF TOKEN≠")" THEN ERROR("Need ) for end of PRINT list");
$$PCODE←P;
END;
PROCEDURE XERROR;
ERROR(TOKEN," is a dummy statement, use some other word");
INTERNAL PROCEDURE FOOCALL(INTEGER I);
IF I=1 THEN PRINTP ELSE
XERROR;
END "PNEW"